stateflow入门学习&笔记 |
您所在的位置:网站首页 › simulink 逻辑 › stateflow入门学习&笔记 |
stateflow入门学习&笔记
由于课题研究需要用到stateflow,所以跟着matlab自带的互动式教程stateflow onramp先把基础学习了一下并总结了下面的笔记,笔记的顺序流程大致与stateflow onramp相符合。因为自己也是初学者,如有错误请大家多多指正。 命令行开启sf --开启stateflow以及stateflow library框 sf -lib --开启stateflow library框 sfnew -matlab --新建一个m语言的stateflow项目 sfnew -c --新建一个c语言的stateflow项目 动作状态(state)entry:语句/函数名 --进入状态的动作,简写为en during:表达式/函数 --处于状态中,简写为du exit:表达式/函数 --离开状态,简写为ex 三者不一定全部定义 on eventname:状态完整的接触到广播事件一次后执行的动作 on after(n,eventname):状态完整的接触到广播事件n次后执行的动作 on before(n,eventname):状态完整的接触到广播事件n次前执行的动作 on at(n,eventname):状态完整的接触到广播事件n次时执行的动作 状态转移从一个状态框的边缘拖动光标到另一个状态框边缘画出一条转移线,双击转移线可以添加转移条件,如下所示,当双击上方转移线并键入power==1后软件会自动帮你加上方括号。 Stateflow支持使用时序逻辑,常用的时序逻辑运算符是 after(N,sec) ,其中 N 是以秒为单位的等待时间。 对于 Simulink 中的图表,时间根据模型的仿真时间进行跟踪。 默认转换如下是一个默认转换,它指定系统的初始状态。 当向空白图表添加状态时,Stateflow 会自动添加默认转换。同时,默认转换上不允许添加任何转换条件。 不可达状态的状态圈周围显示为橙色,如下右侧状态所示: 在 Stateflow 中,图表中使用的输入、输出和局部变量称为图表数据。 所有图表数据都必须具有指定的范围。 下面列出了通用数据范围: Local Data:仅在图表中本地使用的数据。 Input:通过输入端口从 Simulink 接收信号。 Output:信号通过输出端口写入 Simulink。 Parameter:从 MATLAB 工作区或 Simulink 封装参数中读取一个常数值。 我们可以通过Symbols Pane图形界面来快速添加和删除 Stateflow 数据并分配数据范围: chart操作可以在图表模拟期间执行代码。chart动作可分为以下两种。 · 状态动作(satate action):定义了当特定状态处于活动状态时 Stateflow 会做什么。 · 条件动作(Condition actions):定义了当转移条件为真时 Stateflow 会做什么。 状态动作状态动作都以相同的格式指定,常用的三个的状态动作是entry、during和exit。 当它们听起来像它们会发生时:分别表示在进入状态时、保持在状态时和离开状态时所要执行的动作。 Stateflow 还可以执行与转换条件相关的操作。 当前面的转换条件为真时执行条件动作。 条件动作用大括号 ({}) 表示,这样可以将它们与方括号 ([]) 中的转移条件区分开来。 如下图所示,只要满足转移条件x == 1,y 就会被赋值为 1, 这个操作发生在 StateB 的状态进入操作之前: Stateflow 可以构建逻辑模式的无状态模型的流程图,例如决策树和迭代循环。 流程图使用两种图形元素构建的:用箭头表示转换条件的转换路径。 连接点是将路径划分为段的节点,用圆圈表示。 他们可以沿着决策路径提供额外的分支。 例如如下的转换和连接可用于为 if-else 语句建模: Stateflow 提供了模式向导Pattern Wizard来简化通用流程图的创建。 这些模式包括: 决策:if、if-else 和嵌套 if 决策模式。 循环:for、while 和 do-while 循环模式。 开关:最多有四种情况的开关模式。 自定义:用户保存的自定义模式。 Stateflow 支持创建可以在图中多次调用的各种类型的函数。 与文本编程一样,使用函数可以减少冗余并提高可读性。函数可以作为状态动作或条件动作。 如果一个函数返回一个布尔值,它也可以被称为转换条件。 图形函数:图形函数是包含流程图的可重复使用的图表元素。流程图可以直接插入到 Stateflow 图中。可以通过将流程图封装到图形函数中来重用此逻辑。 要添加图形功能,单击面板上fx的图标。 首次添加到模型时,图形函数框将包含一个空白函数签名、一个默认转换和一个终止节点: 可以将已有的MATLAB 函数合并到 Stateflow 图中,从对象选项板上的图标中单击并拖动MATLAB图标。 首次添加到模型时,MATLAB 函数框将包含一个空白函数签名和一个空函数: 使用层次结构允许对具有共同属性或功能的状态进行分组,从而避免 Stateflow 图中的冗余。 要创建层次结构,新建一个状态,此状态必须完全包含一个或多个其他状态(可以用左键单击并拖动状态边界以调整其大小)。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |